// internal/db/clean.go
package db

import (
	"fmt"
	"log/slog"
)

// CleanExpiredData 清理过期数据：使用率<90%且超过3天的记录
// 修复时间筛选逻辑，使用MySQL原生函数处理时间，避免本地time包转换问题
func CleanExpiredData(client *Client) error {

	//使用MySQL的NOW()和DATE_SUB函数计算3天前的时间，避免本地时间与数据库时间不一致
	query := `
		DELETE FROM storage 
		WHERE 
			-- 1. 筛选使用率<90%的数据（移除百分号并转为数字）
			CAST(REPLACE(usage_percent, '%', '') AS DECIMAL(5,2)) < 90
			-- 2. 筛选创建时间超过3天的数据（使用数据库服务器时间计算）
			AND created_at < DATE_SUB(NOW(), INTERVAL 3 DAY)
	`

	// 执行删除操作
	slog.Info("开始清理过期数据")
	result, err := client.Exec(query)
	if err != nil {
		return fmt.Errorf("SQL执行失败：%v（SQL：%s）", err, query)
	}

	// 打印清理结果
	rowsAffected, _ := result.RowsAffected()
	if rowsAffected > 0 {
		//fmt.Printf("清理完成，删除了 %d 条低使用率过期数据\n", rowsAffected)
		slog.Info(fmt.Sprintf("清理过期数据完成，删除记录数：%d", rowsAffected))
	} else {
		//fmt.Println("无符合条件的过期数据需要清理")
		slog.Info("无符合条件的过期数据需要清理")
	}
	return nil
}
